#!/bin/sh

TR069_CONFIG_DIR="/var/tr_069/config"
export UCI_CONFIG_DIR=$TR069_CONFIG_DIR
export UBUS_SOCKET="/var/run/ubus.sock"

device_info_get_sn() {
  status -v sys | awk 'NR==4 {print $4}'
}

device_info_get_product() {
  status -v sys | awk 'NR==1 {print $4}'
}

device_info_get_firmware_version() {
  status -v sys | awk 'NR==3 {print $4}'
}
generate_device_config() {
   echo -e "\n\r"
   echo -e "config device\r"
   echo -e "  option manufacturer Advantech\r"
   echo -e "  option oui 74FE48\r"
   echo -e "  option product_class `device_info_get_product`\r"
   echo -e "  option serial_number `device_info_get_sn`\r"
   echo -e "  option hardware_version NA\r"
   echo -e "  option software_version `device_info_get_firmware_version`"
}

case "$1" in
  start)
    . /opt/tr_069/etc/settings
    echo -n "Starting module: "
    if [ "$MOD_TR069_ENABLED" != "1" ]; then
      echo "skipped"
      exit 0
    fi
    mkdir -p /var/tr_069/config
    decode "$MOD_TR069_CONF" > $TR069_CONFIG_DIR/easycwmp
    generate_device_config >> $TR069_CONFIG_DIR/easycwmp
    /usr/bin/logger -t "TR-069" -p daemon.notice "Starting module"
    /usr/sbin/ubusd -s /var/run/ubus.sock &
    sleep 1
    /usr/sbin/easycwmpd -b start &
    echo "done"
    exit 0;
    ;;
  stop)
    echo -n "Stopping module: "
    /usr/bin/logger -t "TR-069" -p daemon.notice "Stopping module"
    killall easycwmpd 2>/dev/null
    RETVAL1=$?
    for i in 1 2 3 4 5; do
     killall -0 easycwmpd 2>/dev/null; [ "$?" = "1" ] && break
     sleep 1
    done
    killall ubusd 2>/dev/null
    RETVAL2=$?
    for i in 1 2 3 4 5; do
     killall -0 ubusd 2>/dev/null; [ "$?" = "1" ] && break
     sleep 1
    done
    rm -rf /etc/config
    rm -rf $TR069_CONFIG_DIR
    if [ "$RETVAL1" != "0" -a "$RETVAL2" != "0" ]; then echo "failed"; exit $RETVAL; fi
    echo "done"
    exit 0
    ;;
  restart)
    $0 stop
    $0 start
    ;;
  ip-up)
    exit 0
    ;;
  ip-down)
    exit 0
    ;;
  status)
    echo -n "TR-069 service : "
    killall -0 easycwmpd 2>/dev/null
    RETVAL1=$?
    killall -0 ubusd 2>/dev/null
    RETVAL2=$?
    if [ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ]; then echo "running"; else echo "stopped"; fi
    echo ""
    /usr/sbin/easycwmp get value Device.DeviceInfo.
    /usr/sbin/easycwmp get value Device.ManagementServer.
    exit 0
    ;;
  defaults)
    cp /opt/tr_069/etc/defaults /opt/tr_069/etc/settings 2>/dev/null
    ;;
  *)
    echo "Usage: $0 {start|stop|restart|status|defaults}"
    exit 1
esac
